Maximizing the performance of a computer system often involves aligning the needs of software with the capabilities of hardware. This task is a considerably more difficult in virtual-machine environments where the particulars of the underlying hardware is hidden by design. This problem is often acute when deploying systems that are dependent on hard-disk based storage devices. Hard-disk based storage device are notoriously poor performers in virtualized environments when shared ineffectively.
The core of the problem is that hard disks may only have a single recording arm that must be swept across a spinning platter to service each request. Uncoordinated sharing between virtual machine (VM) guest operating systems (OSs) force the recording arm to beat while servicing requests. This can impact performance. This problem can also occur even when a guest-OS has exclusive access to its storage devices when the VM host has presented more than one virtual disk drawn from the same physical hard drive. In this case, the guest-OS can drive its own performance down by concurrently accessing two drives that it views as independent, but are actually conflicting with each other.
The complexity of the storage environment goes well beyond the limitations of hard disk drives. The relationships between virtual disks to physical resources can be many to many. When these resources are not managed properly, particularly in the context of virtual machines, performance can be negatively impacted. Systems and methods are needed to manage the relationships between virtual devices and physical devices and to align the needs of software with the hardware resources.